A resistive change memory element is a non-volatile memory including two electrodes, and a resistive change layer provided between the two electrodes. By applying predetermined voltage between the two electrodes, it is possible to program from a state in which resistance between the electrodes is low (low-resistive state) to a state in which the resistance is high (high-resistive state). Alternatively, it is possible to program from the high-resistive state to the low-resistive state. A resistive state of a resistive change memory element is held even in a state in which power is not supplied. A resistive change memory element can be arranged at each of intersection points of a plurality of word lines and a plurality of bit lines intersecting therewith. A memory cell array in which memory elements are arranged at intersection points of wiring line intersecting in such a manner is called a cross point structure.
In a case of applying a program voltage to a resistive change memory element, a method of limiting current flowing in the resistive change memory element to be equal to or lower than a specific current value. One of purposes of that is to control a resistance value of the resistive change memory element after programming into an intended value. Also, a different purpose is to prevent excessive current from flowing in the resistive change memory element and to prevent breaking of the resistive change memory element.
However, even in a case where the method of limiting current flowing in a resistive change memory element is used as described above, there is still possibility that the resistive change memory element gets broken during programming. When a resistive change memory element is broken, a resistive state of the resistive change memory element is fixed to a low-resistive state and cannot transition to a high-resistive state. Such a resistive change memory element becomes a failure bit and existence of the failure bit causes an operation failure of a circuit.
As a method of relieving a circuit including a failure bit, a technology of previously preparing a redundant bit and replacing the failure bit with the redundant bit is known. However, when the number of failure bits is larger than a certain number in a cell array of a resistive change memory element in the cross point structure, there is a case where it is not possible to relieve a circuit even when replacement with a redundant bit is performed.
In order to prevent a state in which it is not possible to relieve a circuit by replacement with a redundant bit as described above, a technology of making a failure bit transition to a high-resistive state is necessary. However, such a programming method has not known yet.